function AaronTraceInfo(ply, command, args)

	AaronEyeTraceTable = ply:GetEyeTraceNoCursor()
	AaronEyeTraceEnt = ply:GetEyeTraceNoCursor().Entity
	print("\nTrace Table")
	PrintTable(AaronEyeTraceTable)
	print("End Trace Table \n")
	print("Entity Info")
	Msg("Class: "..AaronEyeTraceEnt:GetClass().."\n")
	Msg("Model: "..AaronEyeTraceEnt:GetModel().."\n")
	local entr,entg,entb,enta = AaronEyeTraceEnt:GetColor()
	Msg("Color: R:"..entr.." G:"..entg.." B:"..entb.." A:"..enta.."\n")
	local entmat = AaronEyeTraceEnt:GetMaterial()
	if entmat == "" then entmat = "Default" else entmat = entmat end
	Msg("Material: "..entmat.."\n")
	Msg("Health: "..AaronEyeTraceEnt:Health().."/"..AaronEyeTraceEnt:GetMaxHealth().."\n")
	Msg("World Position: "..tostring(AaronEyeTraceEnt:GetPos()).."\n")
	Msg("Water Level: "..AaronEyeTraceEnt:WaterLevel().."\n")
	print("End Entity Info\n")
	print("Entity Table")
	PrintTable(AaronEyeTraceEnt:GetTable())
	print("End Entity Table\n")
end
concommand.Add("aaronstrace", AaronTraceInfo)

function AaronRulerPoint(ply, command, args)
	toggleaaronsruler = !toggleaaronsruler
	if toggleaaronsruler then
		AaronRulerPt1 = ply:GetEyeTraceNoCursor().HitPos
		ply:ChatPrint("Point 1 Set")
	else
		AaronRulerPt2 = ply:GetEyeTraceNoCursor().HitPos
		ply:ChatPrint("Point 2 Set")
		ply:ChatPrint("Distance: "..math.Round(AaronRulerPt1:Distance(AaronRulerPt2)))
	end
end
concommand.Add("aaronsruler", AaronRulerPoint)